/* 
 * File:   Motor.h
 * Author: 75.02 - Grupo 7, 2do cuatrimestre 2012.
 *
 * Created on 31 de octubre de 2012, 18:53
 */

#ifndef MOTORJUEGO_H
#define	MOTORJUEGO_H

#include <vector>
#include <string>
#include "Motor.h"
#include "Partida.h"

using namespace std;
using namespace TP::Juego;
using namespace TP::Juego::Motorizacion::Sincronizacion;

namespace TP { namespace Juego { namespace Motorizacion { 

class MotorJuego : public Motor {
    
    friend class MotorJuegoFactory;

public:
    
    MotorJuego();
    
    virtual ~MotorJuego();
    
    virtual Ticks notificacionAvanceTiempo (Ticks pTiempo);
    
    virtual Partida* correrPartida (Partida* pPartida);
    
    Partida* getPartidaPorNombre (const string& pNombrePartida);
    
    Partida* getPartidaPorJugador (Jugador* pJugador);
    
    vector<string> listarPartidas();
    
protected:
    virtual vector<Partida*>& getPartidas();
    
private:
    vector<Partida*> _partidas;
    MotorJuego* _motorDesplazamiento;

};

}}}

#endif	/* MOTORJUEGO_H */

